package cn.caskm.souvenirshopsystem.service;

import cn.caskm.souvenirshopsystem.domain.Result;
import cn.caskm.souvenirshopsystem.domain.dto.PageDTO;
import cn.caskm.souvenirshopsystem.domain.po.UserCoupon;
import cn.caskm.souvenirshopsystem.domain.query.UserCouponQuery;
import cn.caskm.souvenirshopsystem.domain.vo.UserCouponVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;
import java.util.List;

public interface UserCouponService extends IService<UserCoupon> {

    /**
     * 分页查询用户优惠券
     */
    Result<PageDTO<UserCouponVO>> page(UserCouponQuery query);

    /**
     * 领取优惠券
     */
    Result<Void> receiveCoupon(Integer couponId);

    /**
     * 使用优惠券
     */
    Result<Void> useCoupon(Long userCouponId, Integer orderId);

    /**
     * 获取用户可用优惠券
     */
    Result<List<UserCouponVO>> getUserAvailableCoupons(Integer userId, BigDecimal orderAmount);

    /**
     * 检查优惠券是否可用
     */
    Result<Boolean> checkCouponAvailable(Long userCouponId, BigDecimal orderAmount);

}
